package com.tianhui.consignortwofei.utils;

import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;

import com.tianhui.consignortwofei.manager.SharedPreferenceManager;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Util {
	
	private static final String TAG = "SDK_Sample.Util";
	
	public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {
		ByteArrayOutputStream output = new ByteArrayOutputStream();
		bmp.compress(CompressFormat.PNG, 100, output);
		if (needRecycle) {
			bmp.recycle();
		}
		
		byte[] result = output.toByteArray();
		try {
			output.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return result;
	}
	
	public static byte[] getHtmlByteArray(final String url) {
		 URL htmlUrl = null;     
		 InputStream inStream = null;     
		 try {         
			 htmlUrl = new URL(url);         
			 URLConnection connection = htmlUrl.openConnection();         
			 HttpURLConnection httpConnection = (HttpURLConnection)connection;         
			 int responseCode = httpConnection.getResponseCode();         
			 if(responseCode == HttpURLConnection.HTTP_OK){             
				 inStream = httpConnection.getInputStream();         
			  }     
			 } catch (MalformedURLException e) {               
				 e.printStackTrace();     
			 } catch (IOException e) {              
				e.printStackTrace();    
		  } 
		byte[] data = inputStreamToByte(inStream);

		return data;
	}
	
	public static byte[] inputStreamToByte(InputStream is) {
		try{
			ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
			int ch;
			while ((ch = is.read()) != -1) {
				bytestream.write(ch);
			}
			byte[] imgdata = bytestream.toByteArray();
			bytestream.close();
			return imgdata;
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return null;
	}
	
	public static byte[] readFromFile(String fileName, int offset, int len) {
		if (fileName == null) {
			return null;
		}

		File file = new File(fileName);
		if (!file.exists()) {
			Log.i(TAG, "readFromFile: file not found");
			return null;
		}

		if (len == -1) {
			len = (int) file.length();
		}

		Log.d(TAG, "readFromFile : offset = " + offset + " len = " + len + " offset + len = " + (offset + len));

		if(offset <0){
			Log.e(TAG, "readFromFile invalid offset:" + offset);
			return null;
		}
		if(len <=0 ){
			Log.e(TAG, "readFromFile invalid len:" + len);
			return null;
		}
		if(offset + len > (int) file.length()){
			Log.e(TAG, "readFromFile invalid file len:" + file.length());
			return null;
		}

		byte[] b = null;
		try {
			RandomAccessFile in = new RandomAccessFile(fileName, "r");
			b = new byte[len]; // 创建合适文件大小的数组
			in.seek(offset);
			in.readFully(b);
			in.close();

		} catch (Exception e) {
			Log.e(TAG, "readFromFile : errMsg = " + e.getMessage());
			e.printStackTrace();
		}
		return b;
	}


	public static   String getShuiYinText(){
		String consignorName = SharedPreferenceManager.getInstance().getConsignorName();
		String phone = SharedPreferenceManager.getInstance().getPhone();
//		String timeNow = DateUtil.getTimeNow();
		String text=consignorName+" "+phone;

		return text;
	}






//	private static final String CHECK_OP_NO_THROW = "checkOpNoThrow";
//	private static final String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION";
//
//	//调用该方法获取是否开启通知权限
//	public static boolean isNotifyEnabled(Context context) {
//		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//			return isEnableV26(context);
//		} else {
//			return isEnabledV19(context);
//		}
//	}
//
//	/**
//	 * 8.0以下判断
//	 *
//	 * @param context api19  4.4及以上判断
//	 * @return
//	 */
//	@RequiresApi(api = Build.VERSION_CODES.KITKAT)
//	private static boolean isEnabledV19(Context context) {
//		AppOpsManager mAppOps =
//				(AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
//
//		ApplicationInfo appInfo = context.getApplicationInfo();
//		String pkg = context.getApplicationContext().getPackageName();
//		int uid = appInfo.uid;
//		Class appOpsClass = null;
//
//		try {
//			appOpsClass = Class.forName(AppOpsManager.class.getName());
//
//			Method checkOpNoThrowMethod =
//					appOpsClass.getMethod(CHECK_OP_NO_THROW,
//							Integer.TYPE, Integer.TYPE, String.class);
//
//			Field opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION);
//			int value = (Integer) opPostNotificationValue.get(Integer.class);
//
//			return ((Integer) checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg) ==
//					AppOpsManager.MODE_ALLOWED);
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//
//	/**
//	 * 8.0及以上通知权限判断
//	 *
//	 * @param context
//	 * @return
//	 */
//	private static boolean isEnableV26(Context context) {
//		ApplicationInfo appInfo = context.getApplicationInfo();
//		String pkg = context.getApplicationContext().getPackageName();
//		int uid = appInfo.uid;
//		try {
//			NotificationManager notificationManager = (NotificationManager)
//					context.getSystemService(Context.NOTIFICATION_SERVICE);
//			Method sServiceField = notificationManager.getClass().getDeclaredMethod("getService");
//			sServiceField.setAccessible(true);
//			Object sService = sServiceField.invoke(notificationManager);
//
//			Method method = sService.getClass().getDeclaredMethod("areNotificationsEnabledForPackage"
//					, String.class, Integer.TYPE);
//			method.setAccessible(true);
//			return (boolean) method.invoke(sService, pkg, uid);
//		} catch (Exception e) {
//			return true;
//		}
//	}
//
//	public static void goSetting(Context context){
//		Intent localIntent = new Intent();
//		//直接跳转到应用通知设置的代码：
//		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//8.0及以上
//			localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//			localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
//			localIntent.setData(Uri.fromParts("package", context.getApplicationContext().getPackageName(), null));
//		} else if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0以上到8.0以下
//			localIntent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
//			localIntent.putExtra("app_package", context.getApplicationContext().getPackageName());
//			localIntent.putExtra("app_uid", context.getApplicationInfo().uid);
//		} else if (android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {//4.4
//			localIntent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
//			localIntent.addCategory(Intent.CATEGORY_DEFAULT);
//			localIntent.setData(Uri.parse("package:" + context.getApplicationContext().getPackageName()));
//		} else {
//			//4.4以下没有从app跳转到应用通知设置页面的Action，可考虑跳转到应用详情页面,
//			localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//			if (Build.VERSION.SDK_INT >= 9) {
//				localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
//				localIntent.setData(Uri.fromParts("package", context.getApplicationContext().getPackageName(), null));
//			} else if (Build.VERSION.SDK_INT <= 8) {
//				localIntent.setAction(Intent.ACTION_VIEW);
//				localIntent.setClassName("com.android.settings", "com.android.setting.InstalledAppDetails");
//				localIntent.putExtra("com.android.settings.ApplicationPkgName", context.getApplicationContext().getPackageName());
//			}
//		}
//		context.startActivity(localIntent);
//
//	}



	//角标
	//华为
	private static void setBadgeOfHuaWei(Context context, int count) {
		//权限检查
		try {
			Bundle bundle = new Bundle();
			bundle.putString("package", context.getPackageName());
			bundle.putString("class", getLauncherClassName(context));
			bundle.putInt("badgenumber", count);
			context.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, bundle);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static String getLauncherClassName(Context context) {
		PackageManager packageManager = context.getPackageManager();
		Intent intent = new Intent(Intent.ACTION_MAIN);
		intent.setPackage(context.getPackageName());
		intent.addCategory(Intent.CATEGORY_LAUNCHER);
		ResolveInfo info = packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
		if (info == null) {
			info = packageManager.resolveActivity(intent, 0);
		}
		return info.activityInfo.name;
	}



	public static String getQianTian() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DAY_OF_YEAR, -2); // 减去两天
		Date twoDaysBefore = calendar.getTime();
		String twoDaysBeforeStr = sdf.format(twoDaysBefore);
//        System.out.println("前天的时间是: " + twoDaysBeforeStr);
		return twoDaysBeforeStr;
	}

	public static String getQianNian() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DAY_OF_YEAR, -100); // 减去两天365
		Date twoDaysBefore = calendar.getTime();
		String twoDaysBeforeStr = sdf.format(twoDaysBefore);
//        System.out.println("前天的时间是: " + twoDaysBeforeStr);
		return twoDaysBeforeStr;
	}




}
